package com.rede.didiok.sms.event.service;

import java.util.List;

import javax.annotation.Resource;

import com.rede.didiok.common.dto.user.MessagePushDto;
import com.rede.didiok.common.dto.user.UserDto;
import com.rede.didiok.common.executor.AsyncService;
import com.rede.didiok.common.feign.AdminFeignClient;
import com.rede.didiok.common.feign.UserFeignClient;
import com.rede.didiok.common.utils.RedisUtil;
import com.rede.didiok.common.utils.business.RabbitMqUtil;

/**
 * @ClassName 抽象消息推送事件处理
 * @Desc
 * @Author 陌溪
 * @Date 2023年4月2日16:58:59
 * @Version 1.0
 **/
public abstract class AbstractMessagePushHandler implements MessagePushEventService {

    @Resource
    protected UserFeignClient userFeignClient;

    /**
     * 简易的mq邮件封装工具类
     */
    @Resource
    protected RabbitMqUtil rabbitMqUtil;

    /**
     * 系统配置；服务
     */
    @Resource
    protected AdminFeignClient adminFeignClient;

    /**
     * 异步执行服务
     */
    @Resource
    protected AsyncService asyncService;

    /**
     * redis
     */
    @Resource
    protected RedisUtil redisUtil;

    /**
     *
     */
//    @Resource
//    protected NoticeService noticeService;
//
//    @Resource
//    protected ImService imService;
//
//    @Resource
//    protected RoomService roomService;

    /**
     * 消息推送处理事件
     *
     * @param messagePush
     */
    public abstract void pushHandler(MessagePushDto messagePush, List<UserDto> userList) throws InterruptedException;
}
